#include using namespace std; int a[50], b[50], c[50], n, B, ok = 1, n1 = 0; int tg[999][50]; void xuat( int i ){ for( int j = 1; j<= n; j++ ) cout<< tg[i][j] << " "; cout<< endl; } void nhap( ){ cout<<"\nNhap do dai xau: "; cin>>n; cout<<"\nNhap khoi luong gioi han: "; cin>> B; for( int i = 1; i<= n; i++ ) a[i] = 0; for( int i = 1; i<= n; i ++ ) cout<<"\nNhap khoi luong vat thu "<< i<<" : ", cin>> b[i]; for( int i= 1; i<= n; i++ ) cout<<"\nNhap vao so cong dung cua vat thu " << i<< " : ", cin>> c[i]; } void sinh( int & ok ){ int i = n; while( i> 0 && a[i] !=0 ) a[i] = 0, i--; if( i> 0 ) a[i] = 1; else ok = 0; } int tmdk1( ){ int temp = 0; for( int i = 1; i<= n; i++ ) temp += a[i] * b[i]; if( temp <= B ) return 1; return 0; } void tmdk2( ){ int temp[999] = {0}; int max = 0; for( int i = 0; i < n1; i++ ){ for( int j = 1; j <= n; j++ ){ temp[i] += tg[i][j] * c[j]; } if( temp[i] > max ) max = temp[i] ; } for( int i = 0; i< n1; i++ ) if( temp[i] == max ) xuat( i ); } void copy( ){ for( int i = 1; i<= n; i++ ) tg[n1][i] = a[i]; } void next(){ while( ok ){ if( tmdk1() ){ copy(); n1++; } sinh( ok ); } tmdk2(); } int main(){ nhap(); next(); return 0; }